<?php

//获取ajax提交的API地址

//用户名加密方法
$user_id = 539899;
$user_name = '';
$password = md5('123456');
$token = $user_id.'-'.md5('self').'-'.sha1(md5(sha1($user_id).sha1($user_name).sha1($password)));

$url    = $_POST['url'];
$param  = $_POST['param'];
$method = $_POST['method'];

$content = '';
$list = array();
$header = array("token: {$token}");
try {
    if ($method == 'POST') {
        if ($param) {
            $params = explode('&', $param);
            if ($params) {
                foreach ($params as $val) {
                    $tmp = explode('=', $val);
                    $list[$tmp[0]] = $tmp[1];
                }
            }
        }
        $content = post($url, $list, $header);
    } else {
        $url = $url.'&'.$param;
        $content = get($url, $header);
    }
    echo ($content);
} catch (Exception $e) {
    $code = $e->getCode();
    $msg  = $e->getMessage();
    ajax_return($code, $msg);
}









function get($url, $header = null, $proxy = null, $timeout = 10) {
    if (!$url) return false;
    $ssl = stripos($url,'https://') === 0 ? true : false;
    $curl = curl_init();
    if (!is_null($proxy)) curl_setopt ($curl, CURLOPT_PROXY, $proxy);
    curl_setopt($curl, CURLOPT_URL, $url);
    if ($ssl) {
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
    }
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //在HTTP请求中包含一个"User-Agent: "头的字符串。
    curl_setopt($curl, CURLOPT_HEADER, 0); //启用时会将头文件的信息作为数据流输出。
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); //启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器，使用CURLOPT_MAXREDIRS可以限定递归返回的数量。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //文件流形式
    curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); //设置cURL允许执行的最长秒数。
    if (is_array($header))
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //设置请求的Header

    $content = curl_exec($curl);
    $curl_errno = curl_errno($curl);
    if ($curl_errno > 0){
        $error = sprintf("curl error=%s, errno=%d.", curl_error($curl), $curl_errno);
        curl_close($curl);
        throw new Exception($error);
    }
    curl_close($curl);
    return $content;
}

function post($url, $data, $header = null, $proxy = null, $timeout = 30) {
    if (!$url) return false;
    if ($data) {
        $data = http_build_query($data);
    }
    $ssl = stripos($url,'https://') === 0 ? true : false;
    $curl = curl_init();
    if (!is_null($proxy)) curl_setopt ($curl, CURLOPT_PROXY, $proxy);
    curl_setopt($curl, CURLOPT_URL, $url);
    if ($ssl) {
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
    }

    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //在HTTP请求中包含一个"User-Agent: "头的字符串。
    curl_setopt($curl, CURLOPT_HEADER, 0); //启用时会将头文件的信息作为数据流输出。
    curl_setopt($curl, CURLOPT_POST, true); //发送一个常规的Post请求
    curl_setopt($curl,  CURLOPT_POSTFIELDS, $data);//Post提交的数据包
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); //启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器，使用CURLOPT_MAXREDIRS可以限定递归返回的数量。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //文件流形式
    curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); //设置cURL允许执行的最长秒数。
    if (is_array($header))
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //设置请求的Header

    $content = curl_exec($curl);
    $curl_errno = curl_errno($curl);
    if ($curl_errno > 0){
        $error = sprintf("curl error=%s, errno=%d.", curl_error($curl), $curl_errno);
        curl_close($curl);
        throw new Exception($error);
    }
    curl_close($curl);
    return $content;
}

/**
 *	控制器 AJAX脚本输出
 * 	@param  int     $status  0:错误信息|1:正确信息
 * 	@param  string  $message  显示的信息
 * 	@param  array   $data    传输的信息
 * 	@param  array   $type    返回数据类型，json|xml|eval
 *  @return object
 */
function ajax_return($status, $message = '', $data = array(), $type = 'json')
{
    $return_data = array('status' => $status, 'message' => $message, 'data' => $data);
    $type = strtolower($type);
    if ($type == 'json') {
        header('Content-type: application/json');
        exit(json_encode($return_data));
    } elseif ($type == 'xml') {
        $xml = '<?xml version="1.0" encoding="utf-8"?>';
        $xml .= '<return>';
        $xml .= '<status>' . $status . '</status>';
        $xml .= '<message>' . $message . '</message>';
        $xml .= '<data>' . serialize($data) . '</data>';
        $xml .= '</return>';
        exit($xml);
    } elseif ($type == 'eval') {
        exit($return_data);
    } else {

    }
}